package com.api.user.model;

import java.io.Serializable;
import java.math.BigDecimal;
import javax.persistence.*;

@Table(name = "coin_transaction")
public class CoinTransaction implements Serializable {
    @Id
    @Column(name = "balance_transaction_id")
    private Long balanceTransactionId;

    /**
     * 关联的订单
     */
    @Column(name = "order_id")
    private Long orderId;

    /**
     * 扣除的用户
     */
    @Column(name = "from_user_id")
    private Long fromUserId;

    /**
     * 交易类型
     * 1会员资格充值（+）
     * 2任务已完成（+）
     * 2加入快速挑战（-）
     * 3。参加比赛（-）
     * 4在兑换中心兑换（-）
     * 5加入预测并获胜（-）
     * 6陪玩订单
     *
     * 10参与竞猜(-), 订单号为竞猜ID
     * 11竞猜获胜(+), 订单号为竞猜ID
     * 12参加快速挑战(-), 订单号为房间ID
     * 13快速挑战获得奖励(+), 订单号为房间ID
     * 14快速挑战主持人赚取金币(+), 订单号为房间ID
     */
    @Column(name = "transaction_type")
    private Integer transactionType;

    /**
     * 交易金额
     */
    @Column(name = "amount_balance")
    private BigDecimal amountBalance;

    /**
     * 交易时间
     */
    @Column(name = "transaction_time")
    private Long transactionTime;

    /**
     * 增加的用户
     */
    @Column(name = "to_user_id")
    private Long toUserId;

    /**
     * 备注信息
     */
    private String remark;

    @Column(name = "coin_before")
    private BigDecimal coinBefore;

    @Column(name = "coin_after")
    private BigDecimal coinAfter;

    @Column(name = "to_coin_before")
    private BigDecimal toCoinBefore;

    @Column(name = "to_coin_after")
    private BigDecimal toCoinAfter;

    @Column(name = "create_id")
    private Long createId;

    private static final long serialVersionUID = 1L;

    /**
     * @return balance_transaction_id
     */
    public Long getBalanceTransactionId() {
        return balanceTransactionId;
    }

    /**
     * @param balanceTransactionId
     */
    public void setBalanceTransactionId(Long balanceTransactionId) {
        this.balanceTransactionId = balanceTransactionId;
    }

    /**
     * 获取关联的订单
     *
     * @return order_id - 关联的订单
     */
    public Long getOrderId() {
        return orderId;
    }

    /**
     * 设置关联的订单
     *
     * @param orderId 关联的订单
     */
    public void setOrderId(Long orderId) {
        this.orderId = orderId;
    }

    /**
     * 获取扣除的用户
     *
     * @return from_user_id - 扣除的用户
     */
    public Long getFromUserId() {
        return fromUserId;
    }

    /**
     * 设置扣除的用户
     *
     * @param fromUserId 扣除的用户
     */
    public void setFromUserId(Long fromUserId) {
        this.fromUserId = fromUserId;
    }

    /**
     * 获取交易类型
     * * 1会员资格充值（+）
     *      * 2任务已完成（+）
     *      * 2加入快速挑战（-）
     *      * 3。参加比赛（-）
     *      * 4在兑换中心兑换（-）
     *      * 5加入预测并获胜（-）
     *      6陪玩订单
     *
     * @return transaction_type - 交易类型 * 1会员资格充值（+）
     *      * 2任务已完成（+）
     *      * 2加入快速挑战（-）
     *      * 3。参加比赛（-）
     *      * 4在兑换中心兑换（-）
     *      * 5加入预测并获胜（-）
     *      6陪玩订单
     */
    public Integer getTransactionType() {
        return transactionType;
    }

    /**
     * 设置交易类型 * 1会员资格充值（+）
     *      * 2任务已完成（+）
     *      * 2加入快速挑战（-）
     *      * 3。参加比赛（-）
     *      * 4在兑换中心兑换（-）
     *      * 5加入预测并获胜（-）
     *      6陪玩订单
     *
     * @param transactionType 交易类型
    *        1会员资格充值（+）
     *      * 2任务已完成（+）
     *      * 2加入快速挑战（-）
     *      * 3。参加比赛（-）
     *      * 4在兑换中心兑换（-）
     *      * 5加入预测并获胜（-）
     *        6陪玩订单
     *        7商品订单
     *        8邀请收益
     */
    public void setTransactionType(Integer transactionType) {
        this.transactionType = transactionType;
    }

    /**
     * 获取交易金额
     *
     * @return amount_balance - 交易金额
     */
    public BigDecimal getAmountBalance() {
        return amountBalance;
    }

    /**
     * 设置交易金额
     *
     * @param amountBalance 交易金额
     */
    public void setAmountBalance(BigDecimal amountBalance) {
        this.amountBalance = amountBalance;
    }

    /**
     * 获取交易时间
     *
     * @return transaction_time - 交易时间
     */
    public Long getTransactionTime() {
        return transactionTime;
    }

    /**
     * 设置交易时间
     *
     * @param transactionTime 交易时间
     */
    public void setTransactionTime(Long transactionTime) {
        this.transactionTime = transactionTime;
    }

    /**
     * 获取增加的用户
     *
     * @return to_user_id - 增加的用户
     */
    public Long getToUserId() {
        return toUserId;
    }

    /**
     * 设置增加的用户
     *
     * @param toUserId 增加的用户
     */
    public void setToUserId(Long toUserId) {
        this.toUserId = toUserId;
    }

    /**
     * 获取备注信息
     *
     * @return remark - 备注信息
     */
    public String getRemark() {
        return remark;
    }

    /**
     * 设置备注信息
     *
     * @param remark 备注信息
     */
    public void setRemark(String remark) {
        this.remark = remark;
    }

    /**
     * @return coin_before
     */
    public BigDecimal getCoinBefore() {
        return coinBefore;
    }

    /**
     * @param coinBefore
     */
    public void setCoinBefore(BigDecimal coinBefore) {
        this.coinBefore = coinBefore;
    }

    /**
     * @return coin_after
     */
    public BigDecimal getCoinAfter() {
        return coinAfter;
    }

    /**
     * @param coinAfter
     */
    public void setCoinAfter(BigDecimal coinAfter) {
        this.coinAfter = coinAfter;
    }

    /**
     * @return to_coin_before
     */
    public BigDecimal getToCoinBefore() {
        return toCoinBefore;
    }

    /**
     * @param toCoinBefore
     */
    public void setToCoinBefore(BigDecimal toCoinBefore) {
        this.toCoinBefore = toCoinBefore;
    }

    /**
     * @return to_coin_after
     */
    public BigDecimal getToCoinAfter() {
        return toCoinAfter;
    }

    /**
     * @param toCoinAfter
     */
    public void setToCoinAfter(BigDecimal toCoinAfter) {
        this.toCoinAfter = toCoinAfter;
    }

    /**
     * @return create_id
     */
    public Long getCreateId() {
        return createId;
    }

    /**
     * @param createId
     */
    public void setCreateId(Long createId) {
        this.createId = createId;
    }
}